/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ui;

import edu.ucue.ptc.gco.mdl.Cargo;
import edu.ucue.ptc.gco.mdl.Categoria;
import edu.ucue.ptc.gco.mdl.Cliente;
import edu.ucue.ptc.gco.mdl.Direccion;
import edu.ucue.ptc.gco.mdl.Empleado;
import edu.ucue.ptc.gco.mdl.Lote;
import edu.ucue.ptc.gco.mdl.Pedido;
import edu.ucue.ptc.gco.mdl.Producto;
import edu.ucue.ptc.gco.mdl.Usuario;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import javax.annotation.PostConstruct;
import javax.el.ELContext;
import javax.el.ValueExpression;
import javax.faces.context.FacesContext;

/**
 *
 * @author Marcelo
 */
@Named(value = "generalAction")
@SessionScoped
public class GeneralAction implements Serializable {

    @PostConstruct
    public void init() {
    }

    public static GeneralAction getInstance() {
        ELContext context = FacesContext.getCurrentInstance().getELContext();
        ValueExpression ex = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
                createValueExpression(context, "#{generalAction}", GeneralAction.class);
        return (GeneralAction) ex.getValue(context);
    }

    public String navegaPrincipal() {
        return "index";

    }

    public String navegaCrearProducto() {
        ProductoAction.getInstance().setModoModificar(false);
        ProductoAction.getInstance().setProducto(new Producto());
        return "producto";
    }

    public String navegaListaProductos() {
        ProductoAction.getInstance().cargaLista();
        return "listaproductos";
    }

    public String navegaCrearCategoria() {
        CategoriaAction.getInstance().setModoModificar(false);
        CategoriaAction.getInstance().setCategoria(new Categoria());
        return "categoria";
    }

    public String navegaListaCategoria() {
        CategoriaAction.getInstance().cargaLista();
        return "listacategoria";
    }

    public String navegaListaClientes() {
        ClienteAction.getInstance().cargaLista();
        return "listaclientes";
    }

    public String navegaListaDireccion() {
        DireccionAction.getInstance().cargaLista();
        return "listadireccion";
    }

    public String navegaCliente() {
        ClienteAction.getInstance().setCliente(new Cliente());
        return "Cliente";
    }

    public String navegaRuta() {
        RutaAction.getInstance().init();
        return "ruta";
    }

    public String navegaDireccion() {
        DireccionAction.getInstance().setDireccion(new Direccion());
        return "Direccion";
    }
    
    public String navegaListaPedidos() {
        PedidoAction.getInstance().cargaLista();
        return "listaPedidos";
    }
    
    public String navegaCrearLote() {
        LoteAction.getInstance().setLote(new Lote());
        LoteAction.getInstance().setModoModificar(false);
        LoteAction.getInstance().getLote().setFechaCaducidad(Calendar.getInstance().getTime());
        return "lote";
    }

    public String navegaCrearPedido() {
        PedidoAction pedidoAction = PedidoAction.getInstance();
        PedidoAction.getInstance().setModoModificar(false);
        pedidoAction.setPedido(new Pedido());
        pedidoAction.setCedulaRuc("");
        pedidoAction.setListaDetalleProducto(new ArrayList());
        pedidoAction.setProductoSel(null);
        return "pedido";
    }
    
    public String navegaEmpleado(){
        EmpleadoAction.getInstance().setEmpleado(new Empleado());
        EmpleadoAction.getInstance().setUsuario();
        EmpleadoAction.getInstance().setEditAction("crear");
        return "empleado";
    }

    public String navegaListaEmpleados() {
        return "listaEmpleados";
    }

    public String navegaCargo() {
        CargoAction.getInstance().setCargo(new Cargo());
        CargoAction.getInstance().setEditAction("crear");
        return "cargo";
    }
 

    public String navegaCrearUsuario() {
        UsuarioAction.getInstance().setUsuario(new Usuario());
        UsuarioAction.getInstance().setModoModificar(false);
        return "usuario";
    }

    public String navegaListaUsuarios() {
        UsuarioAction.getInstance().cargarLista();
        return "listausuarios";
    }

    public String navegaListaCargos() {
        return "listaCargos";
    }
}
